def inputer(matrix : list,num=2) -> list:
for i in range(num): [matrix.append(i) for i in input() if type(i) == str]
return matrix
valid_moves = {0: [1,2] , 1: [0,3],2:[0,3],3:[2,1]}
def determiner(matrix1 : list, matrix2 : list) -> str:
ind_1= matrix1.index('X')
letter = matrix2[ind_1]
if matrix1.index(letter) in valid_moves[ind_1]:
matrix1[matrix1.index(letter)],matrix1[ind_1] = "X", letter
if matrix1 == matrix2: return "YES"
else: return determiner(matrix1, matrix2)
else:
ticker = 0
while ticker < 4:
first = matrix1[0]
second = matrix1[1]
last = matrix1[2]
third = matrix1[3]
matrix1[0] = last
matrix1[1] = first
matrix1[2] = third
matrix1[3] = second
if matrix1 == matrix2:
return "YES"
ind_1= matrix1.index('X')
letter = matrix2[ind_1]
ticker += 1
if matrix1.index(letter) in valid_moves[ind_1]:
matrix_copy1= matrix1[:]
matrix_copy1[matrix1.index(letter)],matrix_copy1[ind_1] = "X", letter
if matrix_copy1 == matrix2: return "YES"
return "NO"
inputer(matrix1 := [])
inputer(matrix2 := [])
print(determiner(matrix1, matrix2))
260. Single Number III | 240. Search a 2D Matrix II |
238. Product of Array Except Self | 229. Majority Element II |
222. Count Complete Tree Nodes | 215. Kth Largest Element in an Array |
198. House Robber | 153. Find Minimum in Rotated Sorted Array |
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |
75. Sort Colors | 74. Search a 2D Matrix |
71. Simplify Path | 62. Unique Paths |
50. Pow(x, n) | 43. Multiply Strings |
34. Find First and Last Position of Element in Sorted Array | 33. Search in Rotated Sorted Array |
17. Letter Combinations of a Phone Number | 5. Longest Palindromic Substring |
3. Longest Substring Without Repeating Characters | 1312. Minimum Insertion Steps to Make a String Palindrome |
1092. Shortest Common Supersequence | 1044. Longest Duplicate Substring |